//获取当前系统日期和时间
var util = require('../../utils/util.js');
Page({
  /**
   * 页面的初始数据
   */
  data: {
    lostName:"", //老人姓名
    locateion:"", //丢失地址
    latitude:"", //维度
    longitude:"", //经度
    contactsName:"", //联系人姓名
    contactsTel:"", //联系人电话
    lostTime: '', //丢失时间（填表时自动获取）
    imgList:[], //图片云存储的地址，浏览器不能直接访问，用于小程序内部图片预览
    tempFilePaths:[], //通过wx.chooseImage返回，用于后续上传给服务器使用
    openIds:[], //得到的志愿者列表
    taskId:'', //任务编号，用于上传图片
    openid:''
  },
  /**
   * 选择当前地点
  */
  chooseNowAddress: function () {
    wx.chooseLocation({ //选择当前地点，调用chooseLocation
      success: res => {
        this.setData({
          locateion: res.name,
          latitude:res.latitude,
          longitude:res.longitude
        });
        console.log("chooseLocation走失地址：",this.data.locateion);
        console.log("chooseLocation纬度：",this.data.latitude);
        console.log("chooseLocation经度", this.data.longitude);
      },
      fail: e => {
        console.log("用户拒绝授权：",e);
        // 判断用户是否拒绝了授权
        wx.getSetting({
          success: res => {
            if (typeof(res.authSetting['scope.userLocation']) != 'undefined' && !res.authSetting['scope.userLocation']) {
              // 用户拒绝了授权
              wx.showModal({
                title: '提示',
                content: '您拒绝了定位权限，将无法使用该功能',
                success: res => {
                  if (res.confirm) {
                    // 跳转设置页面
                    wx.openSetting({
                      success: res => {
                        if (res.authSetting['scope.userLocation']) {
                          // 授权成功，重新定位
                          wx.getLocation({
                            success: res => {}
                          });
                        } else {
                          // 没有允许定位权限
                          wx.showToast({
                            title: '您拒绝了定位权限，将无法使用该功能',
                            icon: 'none'
                          })
                        }
                      }
                    });
                  }
                }
              });
            }
          }
        });
      }
    });
  },
  /** 
   * 获取用户openid
  */
  getOpenid() {
    let that = this;
    wx.cloud.callFunction({
      name: 'getOpenid',
      complete: res => {
        console.log('云函数获取到的openid: ', res.result.openId)
        var openid = res.result.openId;
        that.setData({
          openid: openid
        })
      }
    })
  },
  /**
   * 获取当前系统时间
   */
  getTime:function(){
    var currenTime = util.formatTime(new Date()); // 调用函数时，传入new Date()参数，返回值是日期和时间
    this.setData({  // 再通过setData更改Page()里面的lostTime，动态更新页面的数据
      lostTime: currenTime
    });
  },
  /**
   * 生命周期函数--监听页面显示
   * 1、获取当前系统时间作为报案时间
   * 2、获取家属的openid
   */
  onShow: function () { 
    this.getTime();
    this.getOpenid();
  },
  
  /**
  * 点击加号，将照片上传到云存储中
  */
  gotoShow:function(){ // 选择或拍摄图片
    wx.chooseImage({
      count: 9, //设置选择照片数量
      success:res=>{
        this.setData({
          tempFilePaths:this.data.tempFilePaths.concat(res.tempFilePaths) //图片的本地文件路径列表
        })
        console.log("图片选择成功，链接为：",res.tempFilePaths);
        console.log("保存的tempFilePaths为：",this.data.tempFilePaths);
        wx.showLoading({
          title: '上传中…',
        })
        //循环上传图片到云存储
        for(var i =0 ; i < res.tempFilePaths.length; i++){
          var newImagePath = 'test/' + Math.floor(Math.random()*1000000) + '.png'
          wx.cloud.uploadFile({
            cloudPath:newImagePath,
            filePath:res.tempFilePaths[i],
            success:res=>{
              console.log("成功放置云存储中",res.fileID);
              this.setData({
                imgList:this.data.imgList.concat(res.fileID)
              })
            }
          })
        }
        //这里还有点问题，图片还没上传到云存储，后面的部分就会开始执行了
        wx.hideLoading()
        wx.showToast({
          title: '图片上传成功',
        })
      }
    })
  },

  /**
   * 点击照片进行预览
  */
  topic_preview:function(event){ //预览图片
    console.log("点击的图片下标",event.currentTarget.id)
    var that = this
    //图片预览
    wx.previewImage({
      current: that.data.imgList[event.currentTarget.id], // 当前显示图片的http链接
      urls: that.data.imgList // 需要预览的图片http链接列表
    })
  },
  /**
   * 长按删除图片
   */
  deleteImage: function (e) {
    var that = this;
    var imgList = that.data.imgList;
    var tempFilePaths = this.data.tempFilePaths;
    var index = e.target.id;//获取当前长按图片下标
    console.log("长按的图片下标",index);
    wx.showModal({
      title: '提示',
      content: '确定要删除此图片吗？',
      confirmText: "删除",//默认是“确定” 
      confirmColor: '#fea82f',//确定文字的颜色
      success: res=> {
        if (res.confirm) {
          console.log('确定删除');
          // 从云存储中删除
          wx.cloud.deleteFile({
            fileList:[imgList[index]],
            success:res=>{
              console.log('该文件已经成功从云存储中删除',res)
            },
            fail:err=>{
              console.log("文件从云存储中删除发生错误",err)
            }
          })
          //splice(id,i):从index为id的位置开始，删除i个元素
          imgList.splice(index, 1);
          tempFilePaths.splice(index,1);
        }else if (res.cancel) {
          console.log('取消删除');
          return false;
        }
        that.setData({
          imgList
        });
        console.log("删除后图片列表：",imgList)
      }
    })
   },

  /**
   * 获取老人姓名输入
   */
  lostName_put:function(e){
    this.setData({
      lostName:e.detail.value
    });
    console.log("老人姓名输入：",this.data.lostName);
  },

  /**
   * 获取联系人姓名输入
   */
  contactsName_put:function(e){
    this.setData({
      contactsName:e.detail.value
    })
    console.log("联系人姓名输入：",this.data.contactsName);
  },

  /**
   * 获取联系方式输入
   */
  contactsTel_put:function(e){
    this.setData({
      contactsTel:e.detail.value
    })
    let str = /^1\d{10}$/
    if (this.data.contactsTel.length === 11&&str.test(this.data.contactsTel)) {
      console.log("联系方式输入：",this.data.contactsTel);
    } else {
      console.log("手机号输入格式错误：",this.data.contactsTel);
    }
  },

  /**
   * 表单提交
   */
  submitBtn:function(){
    var data = {
      familyName: this.data.contactsName,
      familyPhoneNumber: this.data.contactsTel,
      lostTime: this.data.lostTime,
      lostmanName: this.data.lostName,
      lostmanPos: this.data.locateion,
      lostmanPosLatitude:this.data.latitude,
      lostmanPosLongitude:this.data.longitude,
      openid:this.data.openid
    }
    var tips = '';
    console.log("提交到服务器的表单数据为：",data)
    // 进行表单必填项是否为空进行判断
    if(data.lostmanName.length === 0){
      tips = '老人姓名为空'
    }else if(data.lostmanPos.length === 0){
      tips = '走失地址为空'
    }else if(data.familyName.length === 0){
      tips = '联系人为空'
    }else if(data.familyPhoneNumber.length != 11){ //电话号码不为11位，则电话号码输入错误
      tips = '联系方式有误'
    }else{
      wx.showModal({
        title: '立即报案',      
        content: '确定信息无误进行提交？',
        confirmText: "报案",//默认是“确定” 
        confirmColor: '#fea82f',//确定文字的颜色
        success: res =>{
          console.log("点击报案：",res)
          if (res.confirm) {
            //点击确定，向服务器提交表单
            wx.request({
              url: 'https://www.lanotherl.com/family/report',
              data,
              method:"POST",
              header: {
                "content-type": "application/x-www-form-urlencoded"
              },
              success: res => {
                this.setData({
                  openIds: res.data.data.volunteerOpenIds,
                  taskId:res.data.data.taskId
                })
                console.log("表单提交接口访问成功：",res);
                console.log("获取到的任务编号：",res.data.data.taskId);
                console.log("获取到的老人编号：",res.data.data.lostmanId);
                console.log("获取到的志愿者列表：",this.data.openIds);
                //循环给服务器返回的志愿者发送模板消息
                Promise.all(this.data.openIds.map(openid=>{ 
                  wx.cloud.callFunction({
                    name:"sendMsg",
                    data:{
                        lostName:this.data.lostName,
                        locateion:this.data.locateion,
                        lostTime:this.data.lostTime,
                        openid:this.data.openid
                    },
                    success:(res)=>{
                      console.log("循环调用云函数成功：",res)
                    }
                  }) 
                }))
                wx.setStorage({//将taskID存储到本地
                  key:"taskId",
                  data:res.data.data.taskId
                })
                wx.setStorage({//将familyName存储到本地
                  key:"familyName",
                  data:data.familyName
                })
                wx.setStorage({//将lostmanName存储到本地
                  key:"lostmanName",
                  data:data.lostmanName
                })
                wx.setStorage({//将lostmanId存储到本地
                  key:"lostmanId",
                  data:res.data.data.lostmanId
                })
                var lostmanID = res.data.data.lostmanId
                Promise.all(this.data.tempFilePaths.map(picture=>{ //上传图片到服务器
                  wx.uploadFile({
                    filePath: picture,
                    name: 'file',
                    url: 'https://www.lanotherl.com/upload/family/face',
                    formData:{
                      lostmanId:lostmanID
                    },
                    success:(res)=>{
                      console.log('图片上传到服务器成功',res)
                    },
                    fail:(res)=>{
                      console.log('图片上传到服务器失败',res)
                    }
                  })
                }))
                wx.showModal({ //弹窗：是否立马进行报案信息完善
                  title: '报案成功',
                  content: '是否立马进行报案信息完善？',
                  confirmText: "前往",//默认是“确定” 
                  confirmColor: '#fea82f',//确定文字的颜色
                  success: function (res) {
                    if (res.cancel) {
                      //点击取消,回到主页
                      wx.navigateTo({
                        url: '/pages/index/index',
                      })
                    }else{
                      //点击确定，转到信息完善页面
                      wx.navigateTo({
                        url: '/pages/edit/edit',
                      })
                    }
                  }
                })
              },
              fail: function (err) {
                console.log(err.data);
              },
            }) 
          }
        },
      })
    }
    if(tips.length != 0){
      wx.showToast({
        image:'../../images/icon/jinggao.png',
        title: tips,
      })
    }
  },
})